בוקר טוב :)

אני עובד על האתר שלי כרגע בוואמפ, הכנסתי את מערכת הלייקים שלי לבפנים ובגלל שיש בעיה שאי אפשר לפתור נאלצתי לתת להם סוג של position: fixed;, זה אומר שהם לא זזים ממקומם, אבל! בשביל זה הסטטוסים (מצטער שאני מתחיל להביא חלקים שלא הסברתי עליהם, אתם תבינו מהקוד) מוגבלים ל20 תווים (כמובן שזה יהיה יותר אבל תראו את הבעיה...) ובמידה וזה עובר את ה20 זה כותב "[המשך קריאה]".

זה הקוד:
if(strlen($randomStatus4) > 20) { $randomStatus4 = substr($randomStatus4, 0, 20 ) . "[המשך לקרוא]" ; } echo htmlspecialchars($randomStatus4) ?>


עכשיו אם הסטטוס גדול מ20 תווים זה באמת כותב המשך קריאה, אבל זה מציג הרבה פחות מ20 תווים בערך 5 - 10 לסטטוס ולא 20...

למישהו יש פתרון? חשוב לציין שבאחסונים רגילים סביר להניח שזה יעבוד אבל אני ממש לא יעלה כל שיפור קטן לאחסון אני תמיד בודק בלוקאל..

תודה מראש.

10 תשובות

avatar ענה iiddaannyy ב 05 לינואר 2013 #

תמשתמש ב-mb_strlen ותעביר בפרמטר של הקידוד את utf-8.

avatar ענה boolval ב 05 לינואר 2013 #

לא הבנתי את החלק של "ותעביר בפרמטר של הקידוד את utf-8".
ותודה, אבדוק אחרי שתסביר לי על זה ^^.

avatar ענה iiddaannyy ב 05 לינואר 2013 #

http://php.net/mb_strlen

avatar ענה boolval ב 05 לינואר 2013 #

mb_strlen($str, 'utf-8')

לזה התכוונת?

avatar ענה iiddaannyy ב 05 לינואר 2013 #

כן. אותו דבר גם ב-substr.

avatar ענה boolval ב 05 לינואר 2013 #

התכוונת בכלל לmb_substr?

avatar ענה boolval ב 05 לינואר 2013 #

הינה הצלחתי.
תודה רבה עידן :) (אני מסמן את זה כתשובה הנכונה כדי שמשתמשים יסתכלו):

if (mb_strlen($randomStatus4, 'UTF-8') > 50) { $randomStatus4 = mb_substr($randomStatus4, 0, 50, 'UTF-8') . "[המשך לקרוא]" ; } echo htmlspecialchars($randomStatus4) ?>

avatar ענה intval ב 05 לינואר 2013 #

htmlspecialchars($randomStatus4, ENT_QUOTES | ENT_HTML5, 'UTF-8')

ps. למה אתה לא משתמש במעברי שורה? הקוד הופך בצורה מופלאת להרבה יותר ברור וקריא

avatar ענה boolval ב 05 לינואר 2013 #

מה זה ENTֹֹ_HTML5?

avatar ענה intval ב 05 לינואר 2013 #

זה משהו שבדרך כלל הולכים לבדוק בדוקומנטציה